package com.insight.modules.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.insight.common.system.api.ISysBaseAPI;
import com.insight.common.util.CommonUtils;
import com.insight.modules.system.entity.LoginPojo;
import com.insight.modules.system.entity.SysLog;
import com.insight.modules.system.mapper.SysLogMapper;
import com.insight.modules.system.service.ISysLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统日志表 服务实现类
 * </p>
 *
 * @Author zhangweijian
 * @since 2018-12-26
 */
@Service
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> implements ISysLogService {

	@Resource
	private SysLogMapper sysLogMapper;
	@Autowired
	private ISysBaseAPI sysBaseAPI;

	/**
	 * @功能：清空所有日志记录
	 */
	@Override
	public void removeAll() {
		sysLogMapper.removeAll();
	}

	/**
	 * 查询总访问次数
	 * @return 总访问次数
	 */
	@Override
	public Long findTotalVisitCount() {
		return sysLogMapper.findTotalVisitCount();
	}

	//update-begin--Author:zhangweijian  Date:20190428 for：传入开始时间，结束时间参数

	/**
	 * 查询指定日期区间内的访问次数
	 * @param dayStart 开始时间
	 * @param dayEnd 结束时间
	 * @return 访问次数
	 */
	@Override
	public Long findTodayVisitCount(Date dayStart, Date dayEnd) {
		return sysLogMapper.findTodayVisitCount(dayStart, dayEnd);
	}

	/**
	 * 查询指定日期区间内的独立IP数量
	 * @param dayStart 开始时间
	 * @param dayEnd 结束时间
	 * @return 独立IP数量
	 */
	@Override
	public Long findTodayIp(Date dayStart, Date dayEnd) {
		return sysLogMapper.findTodayIp(dayStart, dayEnd);
	}
	//update-end--Author:zhangweijian  Date:20190428 for：传入开始时间，结束时间参数

	/**
	 * 根据日期区间查询访问统计数据
	 * @param dayStart 开始时间
	 * @param dayEnd 结束时间
	 * @return 访问统计数据列表，数据结构为Map<String,Object>
	 */
	@Override
	public List<Map<String,Object>> findVisitCount(Date dayStart, Date dayEnd) {
		// 获取数据库类型，可能是为了适配不同数据库查询语法
		String dbType = CommonUtils.getDatabaseType();
		return sysLogMapper.findVisitCount(dayStart, dayEnd, dbType);
	}

	/**
	 * 根据用户ID查询日志记录
	 * @param userid 用户ID
	 * @return 日志列表
	 */
	@Override
	public List<SysLog> selectLogs(String userid) {
		return sysLogMapper.slelctLogs(userid);
	}

	/**
	 * 根据时间参数统计登录数据
	 * @param times 时间参数
	 * @return 登录统计数据列表
	 */
	@Override
	public List<LoginPojo> getCount(String times) {
		return sysLogMapper.getCount(times);
	}
}

